Systems and methods for controlling additive manufacturing

ABSTRACT

A method is disclosed for additively manufacturing a structure. The method may include generating at least one tool path, causing the additive manufacturing machine to place material along a first portion of the at least one tool path, and monitoring placement of the material along the first portion of the at least one tool path. The method may also include adjusting a second portion of the at least one tool path based on the placement, and causing the additive manufacturing machine to place material along the second portion of the at least one tool path after the adjusting.

RELATED APPLICATION

This application is based on and claims the benefit of priority from U.S. Provisional Application No. 63/042,851 that was filed on Jun. 23, 2020, the contents of which are expressly incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to manufacturing control systems and, more particularly, to systems and methods for controlling additive manufacturing.

BACKGROUND

Traditional additive manufacturing is a process of creating three-dimensional parts by depositing overlapping layers of material under the guided control of a computer. A common form of additive manufacturing is known as fused deposition modeling (FDM). Using FDM, a thermoplastic is passed through and liquified within a heated print head. The print head is moved in a predefined trajectory (a.k.a., a tool path) as the material discharges from the print head, such that the material is laid down in a particular pattern and shape of overlapping 2-dimensional layers. The material, after exiting the print head, cools and hardens into a final form. A strength of the final form is primarily due to properties of the particular thermoplastic supplied to the print head and a 3-dimensional shape formed by the stack of 2-dimensional layers.

A recently developed improvement over traditional FDM manufacturing involves the use of continuous fibers embedded within material discharging from the print head. For example, a matrix can be supplied to the print head and discharged (e.g., extruded and/or pultruded) along with one or more continuous fibers also passing through the same print head at the same time. The matrix can be a traditional thermoplastic, a powdered metal, a liquid matrix (e.g., a UV curable and/or two-part resin), or a combination of any of these and other known matrixes. Upon exiting the print head, a cure enhancer (e.g., a UV light, a laser, an ultrasonic emitter, a heat source, a catalyst supply, etc.) is activated to initiate and/or complete curing (e.g., hardening, cross-linking, sintering, etc.) of the matrix. This curing, when completed quickly enough, can allow for unsupported structures to be fabricated in free space. And when fibers, particularly continuous fibers, are embedded within the structure, a strength of the structure may be multiplied beyond the matrix-dependent strength. An example of this technology is disclosed in U.S. Pat. No. 9,511,543 that issued to Tyler on Dec. 6, 2016 (“the '543 patent”).

The disclosed systems and methods are directed to addressing ways of controlling additive manufacturing systems similar to those disclosed in the '543 patent and/or other systems known in the art.

SUMMARY

In one aspect, the present disclosure is directed to a method for additively manufacturing a structure. The method may include generating at least one tool path, causing the additive manufacturing machine to place material along a first portion of the at least one tool path, and monitoring placement of the material along the first portion of the at least one tool path. The method may also include adjusting a second portion of the at least one tool path based on the placement, and causing the additive manufacturing machine to place material along the second portion of the at least one tool path after the adjusting.

In another aspect, the present disclosure is directed to another method for additively manufacturing a composite structure. This method may include discharging material through an outlet of an additive manufacturing machine. The method may also include selectively severing the material via a stationary cut process and a moving cut process.

In yet another aspect, the present disclosure is directed to a system for additively manufacturing a composite structure. The system may include an additive manufacturing machine and a control system configured to regulate operation of the additive manufacturing machine. The control system may include a processor programmed to generate at least one tool path, to cause the additive manufacturing machine to place material along a first portion of the at least one tool path, and to monitor placement of the material along the first portion of the at least one tool path. The processor may be further programmed to adjust a second portion of the at least one tool path based on the placement, and to cause the additive manufacturing machine to place material along the second portion of the at least one tool path after the adjustment.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagrammatic illustration of an exemplary disclosed additive manufacturing machine and a corresponding control system that may be used to control the machine;

FIG. 2 is a schematic illustration of the control system of FIG. 1 ;

FIGS. 3, 4, 5, 6, 7 and 8 are flowcharts representing exemplary methods that may be implemented by the control system of FIGS. 1 and 2 ; and

FIGS. 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, and 25 are images depicting steps shown in the flowcharts of FIGS. 3-8 .

DETAILED DESCRIPTION

FIG. 1 illustrates an exemplary control system (“system”) 10, which may be used to design, plan, fabricate, and/or analyze a structure 12 having any desired shape, size, consist, and functionality. System 10 may include, among other things, an additive manufacturing machine (“machine”) 14 and at least one computing device 16 operatively connected to machine 14. Machine 14 may be configured to create structure 12 under the guided control of computing device 16, for example by way of an additive manufacturing process. Although additive manufacturing processes utilizing one or more continuous reinforcements (e.g., fibers—F) and one or more curable matrixes (M) will be described below as examples of how structure 12 may be created, it should be noted that other processes known in the art could alternatively be utilized for this purpose and benefit from the disclosed control systems and methods.

Machine 14 may be comprised of components that are controllable to create structure 12, layer-by-layer and/or in free space (e.g., without the bracing of an underlying layer). These components may include, among other things, a support 18 and any number of heads 20 coupled to and/or powered by support 18. In the disclosed embodiment of FIG. 1 , support 18 is a robotic arm capable of moving head 20 in multiple directions during fabrication of structure 12. It should be noted that any other type of support (e.g., a gantry, an arm/gantry combination, etc.) capable of moving head 20 in the same or in a different manner could also be utilized, if desired.

Each head 20 (only one shown in FIG. 1 , for clarity) may be configured to discharge at least a matrix (e.g., a liquid resin, such as a zero volatile organic compound resin; a powdered metal; etc.) that is curable. Exemplary curable matrixes include a thermoset polymer, single- or multi-part epoxy resins, polyester resins, cationic epoxies, acrylated epoxies, urethanes, esters, a thermoplastic polymer, photopolymers, polyepoxides, thiols, alkenes, thiol-enes, and more. In one embodiment, the matrix inside each head 20 may be pressurized, for example by an external device (e.g., an extruder or another type of pump—not shown) that is fluidly connected to head 20 via a corresponding conduit (not shown). In another embodiment, however, the pressure may be generated completely inside of head 20 by a similar type of device. In yet other embodiments, the matrix may be gravity-fed through and/or mixed within head 20. In some instances, the matrix inside head 20 may need to be kept cool and/or dark to inhibit premature curing; while in other instances, the matrix may need to be kept warm and/or light for the same reason. In either situation, head 20 may be specially configured (e.g., insulated, temperature controlled, shielded, etc.) to provide for these needs.

In some embodiments, the matrix may be mixed with, contain, or otherwise at least partially wet or coat one or more fibers (e.g., individual fibers, tows, rovings, sleeves, ribbons, and/or sheets of material) and, together with the fibers, make up at least a portion (e.g., a wall) of structure 12. The fibers may be stored within (e.g., on one or more separate internal spools—not shown) or otherwise passed through head 20 (e.g., fed from one or more external spools). When multiple fibers are simultaneously used, the fibers may be of the same type and have the same diameter, cross-sectional shape (e.g., circular, rectangular, triangular, etc.), and sizing, or of a different type with different diameters, cross-sectional shapes, and/or sizing. The fibers may include, for example, aramid fibers, carbon fibers, vegetable fibers, wood fibers, mineral fibers, glass fibers, metallic wires, optical tubes, etc. It should be noted that the term “fiber” is meant to encompass both structural and non-structural (e.g., functional) types of continuous reinforcements that can be at least partially encased in the matrix discharging from head 20.

The fibers may be exposed to (e.g., at least partially wetted, coated with, and/or fully saturated in) the matrix while the fibers are inside head 20, while the fibers are being passed to head 20, and/or while the fibers are discharging from head 20, as desired. The matrix, dry fibers, and/or fibers that are already exposed to the matrix (e.g., wetted fibers) may be transported into head 20 in any manner apparent to one skilled in the art.

Support 18 may move head 20 in a particular trajectory (e.g., a trajectory corresponding to an intended shape, size, and/or function of structure 12) at the same time that the matrix-wetted fiber(s) discharge from head 20, such that one or more continuous paths of matrix-wetted fiber(s) are formed along the trajectory. Each path may have any cross-sectional shape, diameter, and/or fiber-to-matrix ratio, and the fibers may be radially dispersed with the matrix, located at a general center thereof, or located only at a periphery.

One or more cure enhancers (e.g., a UV light, a laser, an ultrasonic emitter, a heater, a catalyst dispenser, etc.) 22 may be mounted proximate (e.g., within or on) head 20 and configured to enhance a cure rate and/or quality of the matrix as it is discharged from head 20. Cure enhancer 22 may be regulated to selectively expose surfaces of structure 12 to a desired type and/or intensity of energy (e.g., to UV light, electromagnetic radiation, vibrations, heat, a chemical catalyst or hardener, etc.) during the formation of structure 12. The energy may increase a rate of chemical reaction occurring within the matrix, sinter the matrix, harden the matrix, or otherwise cause the matrix to cure as it discharges from head 20. In the depicted embodiments, cure enhancer 22 includes multiple LEDs that are equally distributed about a center axis of head 20. However, it is contemplated that any number of LEDs and/or other energy sources could alternatively be utilized for the disclosed purposes and/or arranged in another manner (e.g., unequally distributed, arranged in a row, only leading, only trailing, etc.). For example, cure enhancers 22 could be located on an arm (not shown) that trails behind head 20 and/or on a portion of support 18, if desired. The amount of energy produced by cure enhancer(s) 22 may be sufficient to at least partially cure an exposes surface of the matrix before structure 12 axially grows more than a predetermined length away from head 20. In one embodiment, structure 12 is completely cured before the axial growth length becomes equal to an external diameter of the matrix-coated reinforcement.

In the embodiment of FIG. 1 , head 20 is modular. For example, head 20 may include a matrix reservoir 26 and an outlet 24 that is removably connected to matrix reservoir 26 (e.g., via one or more threaded fasteners, clasps, actuators, and/or other hardware—not shown). In this example, outlet 24 is a single-track outlet configured to discharge composite material having a generally circular, rectangular, triangular, and/or other polygonal cross-section. The configuration of head 20, however, may allow outlet 24 to be swapped out for another outlet that discharges composite material having a different shape (e.g., a tubular cross-section, a ribbon or sheet cross-section, etc.) and/or a different number of tracks.

In some embodiments, cure enhancer(s) 22 may be mounted to a lower portion (e.g., a portion distal from matrix reservoir 26) of outlet 24. With this configuration, cure enhancer(s) 22 may be located around a distal end in a configuration that best suits the shape, size, and/or type of material discharging from outlet 24. In the disclosed embodiment, cure enhancer(s) 22 are mounted at an angle relative to a central axis of outlet 24, such that energy from cure enhancer(s) 22 is directed centrally toward the material discharging from outlet 24. One or more optics 31 may be used in some applications, to selectively block, disperse, focus, and/or aim the energy from cure enhancers 22 at an opening of outlet 24. This may affect a cure rate of and/or cure location on the material discharging from outlet 24. It is contemplated that optics 31 may be adjustable, if desired (e.g., manually adjustable via a set screw—not shown, or automatically adjustable via an actuator—not shown).

The matrix and/or reinforcement may be discharged together from head 20 via any number of different modes of operation. In a first example mode of operation, the matrix and/or reinforcement are extruded (e.g., pushed under pressure and/or mechanical force) from head 20 as head 20 is moved by support 18 to create features of structure 12. In a second example mode of operation, at least the reinforcement is pulled from head 20, such that a tensile stress is created in the reinforcement during discharge. In this second mode of operation, the matrix may cling to the reinforcement and thereby also be pulled from head 20 along with the reinforcement, and/or the matrix may be discharged from head 20 under pressure along with the pulled reinforcement. In the second mode of operation, where the reinforcement is being pulled from head 20, the resulting tension in the reinforcement may increase a strength of structure 12 (e.g., by aligning the reinforcements, inhibiting buckling, equally loading the reinforcements, etc.) after curing of the matrix, while also allowing for a greater length of unsupported structure 12 to have a straighter trajectory. That is, the tension in the reinforcement remaining after curing of the matrix may act against the force of gravity (e.g., directly and/or indirectly by creating moments that oppose gravity) to provide support for structure 12.

The reinforcement may be pulled from head 20 as a result of head 20 being moved and/or tilted by support 18 away from an anchor point (e.g., a print bed, an existing surface of structure 12, a fixture, etc.) 32. For example, at the start of structure formation, a length of matrix-impregnated reinforcement may be pulled and/or pushed from head 20, deposited against anchor point 32, and at least partially cured, such that the discharged material adheres (or is otherwise coupled) to the anchor point. Thereafter, head 20 may be moved and/or tilted away from anchor point 32, and the relative motion may cause the reinforcement to be pulled from head 20. As will be explained in more detail below, the movement of reinforcement through head 20 may be selectively assisted via one or more internal feed mechanisms, if desired. However, the discharge rate of reinforcement from head 20 may primarily be the result of relative movement between head 20 and anchor point 32, such that tension is created within the reinforcement. As discussed above, anchor point 32 could be moved away from head 20 instead of or in addition to head 20 being moved away from anchor point 32.

Any number of separate computing devices 16 may be used to design and/or control the placement of fibers within structure 12 and/or to analyze performance characteristics of structure 12 before, during, and/or after formation. Computing device 16 may include, among other things, a display 34, one or more processors 36, any number of input/output (“I/O”) devices 38, any number of peripherals 40, and one or more memories 42 for storing programs 44 and data 46. Programs 44 may include, for example, any number of design and/or printing apps 48 and an operating system 50.

Display 34 of computing device 16 may include a liquid crystal display (LCD), a light emitting diode (LED) screen, an organic light emitting diode (OLED) screen, and/or another known display device. Display 34 may be used for presentation of data under the control of processor 36.

Processor 36 may be a single or multi-core processor configured with virtual processing technologies, and use logic to simultaneously execute and control any number of operations. Processor 36 may be configured to implement virtual machine or other known technologies to execute, control, run, manipulate, and store any number of software modules, applications, programs, etc. In addition, in some embodiments, processor 36 may include one or more specialized hardware, software, and/or firmware modules (not shown) specially configured with particular circuitry, instructions, algorithms, and/or data to perform functions of the disclosed methods. It is appreciated that other types of processor arrangements could be implemented that provide for the capabilities disclosed herein.

Memory 42 can be a volatile or non-volatile, magnetic, semiconductor, tape, optical, removable, non-removable, or other type of storage device or tangible and/or non-transitory computer-readable medium that stores one or more executable programs 44, such as analysis and/or printing apps 48 and operating system 50. Common forms of non-transitory media include, for example, a flash drive, a flexible disk, a hard disk, a solid state drive, magnetic tape or other magnetic data storage medium, a CD-ROM or other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EPROM or other flash memory, NVRAM, a cache, a register or other memory chip or cartridge, and networked versions of the same.

Memory 42 may store instructions that enable processor 36 to execute one or more applications, such as design and/or fabrication apps 48, operating system 50, and any other type of application or software known to be available on computer systems. Alternatively or additionally, the instructions, application programs, etc. can be stored in an internal and/or external database (e.g., a cloud storage system—not shown) that is in direct communication with computing device 16, such as one or more databases or memories accessible via one or more networks (not shown). Memory 42 can include one or more memory devices that store data and instructions used to perform one or more features of the disclosed embodiments. Memory 42 can also include any combination of one or more databases controlled by memory controller devices (e.g., servers, etc.) or software, such as document management systems, Microsoft SQL databases, SharePoint databases, Oracle™ databases, Sybase™ databases, or other relational databases.

In some embodiments, computing device 16 is communicatively connected to one or more remote memory devices (e.g., remote databases—not shown) through a network (not shown). The remote memory devices can be configured to store information that computing device 16 can access and/or manage. By way of example, the remote memory devices could be document management systems, Microsoft SQL database, SharePoint databases, Oracle databases, Sybase databases, Cassandra, HBase, or other relational or non-relational databases or regular files. Systems and methods consistent with disclosed embodiments, however, are not limited to separate databases or even to the use of a database.

Programs 44 may include one or more software or firmware modules causing processor 36 to perform one or more functions of the disclosed embodiments. Moreover, processor 36 can execute one or more programs located remotely from computing device 16. For example, computing device 16 can access one or more remote programs that, when executed, perform functions related to disclosed embodiments. In some embodiments, programs 44 stored in memory 42 and executed by processor 36 can include one or more of design, fabrication, and/or analysis apps 48 and operating system 50. Apps 48 may cause processor 36 to perform one or more functions of the disclosed methods.

Operating system 50 may perform known operating system functions when executed by one or more processors such as processor 36. By way of example, operating system 50 may include Microsoft Windows, Unix, Linux, OSX, IOS, Raspberry Pi OS (e.g., Rapbian), Android, or another type of operating system 50. Accordingly, disclosed embodiments can operate and function with computer systems running any type of operating system 50.

I/O devices 38 may include one or more interfaces for receiving signals or input from a user and/or machine 14, and for providing signals or output to machine 14 that allow structure 12 to be printed. For example, computing device 16 can include interface components for interfacing with one or more input devices, such as one or more keyboards, mouse devices, and the like, which enable computing device 16 to receive input from a user.

Peripheral device(s) 40 may be standalone devices or devices that are embedded within or otherwise associated with machine 14 and used during fabrication of structure 12. As shown in FIG. 2 , peripherals 40 can embody input devices (e.g., one or more sensors, such as tension sensors, position sensors, pressure sensors, temperature sensors, proximity sensors, level sensors, rotary encoders, scanners, potentiometers, and other sensors known in the art) 40A and/or output devices (e.g., one or more actuators, such as a matrix supply, a fiber supply, a heater, a pump, cure enhancer 22, a positioning motor, a cutter, a feed roller, a tensioner, a wetting mechanism, a compactor, etc.) 40B. In some embodiments, peripherals 40 may, themselves, include one or more processors (e.g., a programmable logic control (PLC), a computer numeric controller (CNC), etc.), a memory, and/or a transceiver. When peripheral device(s) 40 are equipped with a dedicated processor and memory, the dedicated processor may be configured to execute instructions stored on the memory to receive commands from processor 36 associated with video, audio, other sensory data, control data, location data, etc., including capture commands, processing commands, motion commands, and/or transmission commands. The transceiver may include a wired or wireless communication device capable of transmitting data to or from one or more other components in system 10. In some embodiments, the transceiver can receive data from processor 36, including instructions for sensor and/or actuator activation and for the transmission of data via the transceiver. In response to the received instructions, the transceiver can packetize and transmit data between processor 36 and the other components.

Design, fabrication, and/or analysis apps 48 may cause computing device 16 to perform methods related to generating, receiving, processing, analyzing, storing, and/or transmitting data in association with operation of machine 14 and corresponding design/fabrication/analysis of structure 12. For example, apps 48 may be able to configure computing device 16 to perform operations including: displaying a graphical user interface (GUI) on display 34 for receiving design/control instructions and information from the operator of machine 14; capturing sensory data associated with machine 14 (e.g., via peripherals 40A); receiving instructions via I/O devices 38 and/or the user interface regarding specifications, desired characteristics, and/or desired performance of structure 12; processing the control instructions; generating one or more possible designs of and/or plans for fabricating structure 12; analyzing and/or optimizing the designs and/or plans; providing recommendations of one or more designs and/or plans; controlling machine 14 to fabricate a recommended and/or selected design via a recommended and/or selected plan; analyzing the fabrication; and/or providing feedback and adjustments to machine 14 for improving future fabrications.

FIGS. 3-8 are flowcharts depicting exemplary methods that may be implemented by computing device 16 during design, analysis, and/or fabrication of structure 12 by machine 14. FIGS. 12-25 depict operations outlined in the flowcharts of FIGS. 3-8 . FIGS. 3-8 and 12-25 will be discussed in detail in the following section to further illustrate the disclosed concepts.

INDUSTRIAL APPLICABILITY

The disclosed systems may be used to continuously manufacture composite structures having any desired cross-sectional shape, length, density, stiffness, strength, and/or other characteristic. The composite structures may be fabricated from any number of different reinforcements of the same or different types, diameters, shapes, configurations, and consists, and/or any number of different matrixes. Operation of system 10 will now be described in detail, with reference to the flowcharts of FIGS. 3-8 and the image of FIGS. 12-25 .

As can be seen in the flowchart of FIG. 3 , the creation of structure 12 may generally be divided into three different phases, including: Pathing, Validating, and Fabricating. The Pathing Phase may generally be associated with defining of structure 12 and generating of points at which machine 14 should pass through during material discharge to fabricate structure 12 in the defined manner, as well as compiling of the points into one or more ordered paths. The Validating Phase may generally be associated with ensuring that the paths can followed by machine 14 during discharging of particular materials and preparation of the paths for ingestion by machine 14. The Fabricating Phase may generally be associated with activation of machine 14 to follow the ingested paths, as well as iterative and/or live adjusting of the paths based on real-time observations of the fabricating process.

The Pathing Phase of structure creation may begin with receipt by processor 36 (e.g., via I/O device(s) 38) of one or more virtual models of structure 12 and associated specifications from a user of system (Step 300). The virtual model be received from any computer-aided drafting (CAD) system available, for example as a data file. The model may be a 2D model and received as an .SVG, .AI, .EPS, .PDF, .DXF, etc. or a 3D model and received as an .STL, .OBJ, .PLY, .3MF, .AMF, etc. The specifications may include, among other things, do-not-exceed physical envelopes of structure 12, (e.g., an exterior and/or interior boundary definition of structure 12 in which structure 12 is to reside and function) guide curves, slice planes or other geometry, expected operating conditions (e.g., force loading, deflection loading, vibratory loading, thermal loading, environmental loading, etc.), desired characteristics (e.g., hardness, weight, buoyancy, conductivity, shielding, etc.), and/or desired performance (e.g., minimum values, maximum values, specified matrix identification and/or material properties, specified fiber identification and/or material properties, and/or acceptable ranges for particular material parameters, such as conductance, stiffness, strength, etc.).

Processor 36 may then prompt for and receive input from the user indicative of a type of fabrication process to be next performed by machine 14 (Step 305). That is, structure 12 may require one or more different processes be performed for fabrication to be complete, and not all the processes may be performed at the same time. These processes may include, among other things, an infill process and a surface process. The infill process may be associated with fabrication of an inner portion (e.g., a skeleton, scaffold, frame, or other foundational configuration of structure 12), while the surface process may be associated with an outer portion (e.g., a skin, outer layer, or other exposed contour) that is to be located adjacent, and/or around the inner portion. In general, an infill may have a courser or less-refined characteristic than the surface. The input received at Step 305 may be fed into either a corresponding Infill Module (Step 310) or a corresponding Surface Module (Step 315), both of which may be able to generate points through which head 20 should move during material discharge to fabricate the respective inner or outer portions. In addition to generating the points, the points may be grouped within the corresponding module(s) into any number of different paths, each path having a start point and an end point corresponding to a distinct fabrication event of head 20. The Infill and Surface Modules will be discussed separately in more detail below.

After the Infill and/or Surface Modules generate the path(s) associated with fabrication of the inner and/or outer portions of structure 12, processor 36 may determine a need for supports to prop up or otherwise stabilize the paths (Step 320). In particular, depending on the size, shape, orientation, mass, material, etc. of structure 12, some portions of structure 12 may need to be supported during fabrication along the paths in order to maintain a desired integrity (e.g., in order to inhibit warping, drooping, breaking, or other straining). Processor 36 may identify these portions and generate corresponding points at which support material should be discharged (e.g., by machine 14 or another support-only machine—not shown). These identification and/or point generation operations may be rule-based, for example determined based on thresholds associated with overhang values, angles, masses, fiber densities, fabrication-induced forces, curvatures, etc.).

The paths generated by the Infill and/or Surface Modules and the corresponding support points may be agnostic to the particular configuration of machine 14 that is to discharge material along each of the paths and at each of the support points. In other words, the paths and points may be generated regardless of the kinematics, capacities, specifications, etc. of machine 14. Accordingly, after their generation, processor 36 may be configured to direct the paths and support points into a CAM module, where the paths and/or points are validated and sequenced for use with the particular configuration of machine 14 (Step 325). The CAM Module will be discussed separately in more detail below. It is contemplated that the CAM Module may alternatively be referenced during initial generation of the paths and/or support points, if desired, such that only points and paths that are within the capacity of machine 14 to fabricate are generated.

The sequence of validated paths and support points may then be simulated by processor 36, and the sequence and data associated with completion of the paths and support points may be displayed (Step 330). Simulation may include, for example, a presentation on display 34 of an order that each path and support point will be discharged or passed through by machine 14, a presentation of head 20 during discharge (e.g., showing location, orientation, speeds, etc.), a presentation of support 18, a presentation of structure 12, a presentation of any required tool changes, etc. The data shown on display 34 may include a time since start of discharge, a total time elapsed, an amount of material discharged, a percentage of path completed, a time remaining to completion, a total amount of time required, etc. The simulation may provide visual clarity to a user regarding the process to be completed, and also be used to automatically check for collisions and other machinability issues.

Once the paths, support points, and print data have been shown on display 34, processor 36 may be configured to receive input from the user regarding modifications to and/or decoration of the paths and/or support points (Step 335). For example, the user may be able to modify an order in which the paths and/or support points within a particular path are completed, institute pausing between execution of particular paths and/or points, adjust a speed of head 20 during particular paths and/or support points, adjust minimum path lengths and/or gaps between paths, adjust a pose of head 20 along the paths, adjust an intensity of cure enhancers 22 at particular points within a given path, adjust head travel speed vs. cure intensity (e.g., based on curvature and/or local angle), override one or more setpoints (e.g., compactor behavior, compaction forces, heater settings, etc.), etc.

If modifications are requested at this point in time (Step 335:Y), control may return to Steps 310, 315, and/or 320 (depending on the particular modifications), where the modifications are implemented and new paths and/or support points are generated and/or thereafter sequenced. However, if no modifications are requested (Step 335:N), machine code corresponding to the paths and support points may be produced and directed to a Check Module (Step 340). As will be explained in greater detail below, the Check Module may be configured to check if conditions and settings of machine 14 are correct before initiating fabrication of structure 12 using the machine code. Control may then proceed from the Validating Phase into the Fabricating Phase.

Generally, if supports were determined at Step 320 to be necessary, the supports may be fabricated first (e.g., before fabricating structure 12—Step 345). The supports may be fabricated in any manner known in the art. For example, the supports may be fabricated by machine 14 using matrix-coated fibers or matrix only (e.g., without fibers). Alternatively, the supports may be fabricated by another type of machine 14. It is contemplated that the supports could alternatively be fabricated during and/or after fabrication of structure 12, if desired. For example, after fabrication of one or more structural layers, head 20 may be swapped out from machine 14 for a support-fabricating head 20. One or more support layers may then be discharged, before another swap back for the original structural-fabricating head 20. Other strategies (e.g., swapping out materials within the same head 20) may also or alternatively be employed.

After required supports have been fabricated, control may progress to a Discharge Module (Step 355), which is responsible for controlling operation of machine 14 during discharge of matrix-wetted reinforcements from head 20. As will be explained in more detail below, processor 36 may be configured to continuously monitor the discharge of material from head 20, not only for quality control purposes, but also to track the progress according to the selected plan. This monitoring may be completed, for example, based on signals received from one or more input devices of peripherals 40A. Processor 36 may determine when a current path in the plan is complete (e.g., by comparing a current position of head 20 to an end position in the path—Step 365). If the path is not yet complete, control may return to Step 340. Otherwise, processor 36 may determine if any additional paths are required to complete fabrication of structure 12 (Step 380). Processor 36 may determine that additional paths are required, for example, based on comparison of any completed paths with a number and/or identification of paths included within the fabrication plan for structure 12. When additional paths are required, control may return from Step 380 to Step 340. Otherwise, the Fabricating Phase may be considered complete.

An exemplary Infill Module is illustrated in detail in FIG. 4 . As shown in the flowchart of FIG. 4 , once control has passed into the Infill Module, processor 36 may determine if the virtual model of structure 12 received at Step 300 (referring to FIG. 3 ) is a 2D or 3D model. This determination may be made based directly on input from the user (e.g., manual selection of an associated option) or based on a type of the file received. For example, if the file type is one of .SVG, .AI, .EPS, or .PDF, processor 36 may determine that the virtual model is a 2D model, and control may progress to Step 400. An exemplary 2D model is illustrated in FIG. 12 .

As shown in FIG. 12 , the 2D model may include a sketch having a polygonal outline 1200 of a planar shape that is to be fabricated layer-by-layer in an overlapping manner until a user-specified height distance D, which is generally orthogonal to the plane of the shape, has been reached. In some embodiments, the shape may be specified to change throughout part or all of the height distance D (e.g., taper inwards, taper outwards, sweep to another polygonal outline, etc.). A thickness t of each layer 1202 may be related to a diameter or thickness of the material discharged by machine 14 (e.g., related to a diameter or thickness of the reinforcement and the matrix coating the reinforcement, related to an outlet diameter of head 20, etc.). The thickness t of each layer 1202 may also be related to an amount of pressure applied to the discharging material by the compactor of machine 14 and/or curing characteristics of the matrix (e.g., expansion, shrinkage, etc.).

At a Step 405, processor 36 may be configured to divide the user-specified height distance D by the thickness t to generate a number of the overlapping layer(s) 1202 discussed above. Processor 36 may then receive input from the user regarding a pattern 1204 of infill to be used to populate each layer 1202 with material (Step 410). For example, the user may be able to specify that a particular 2D pattern 1204 be utilized or that processor 36 is to generate a pattern 1204 that optimizes a topology of each layer 1202. The particular pattern 1204 may include a selection of one or more predetermined patterns (e.g., a simple line pattern—see FIG. 10 , a sine wave pattern—see FIGS. 11 and 12 , a sawtooth pattern—see FIG. 9 , a diamond pattern, a hexagonal pattern, etc.) and/or a function defined by the user. In addition, the user may be able to specify a different pattern 1204 for each layer 1202, a set of patterns 1204 to be repeated throughout layers 1202, and/or relationships (e.g., relative angles, offsets, scales, rotations, densities, and other transformations) between adjacent-layer patterns 1204. The user may also specify a distance between adjacent features of infill within a layer 1202, angles for the features, scaling of the features, frequencies of the features, amplitudes of the features, and/or other similar criteria.

In some applications, the pattern specified by the user could be a 3D pattern. In these applications, the 3D pattern may need to be sliced after placement and/or orientation within boundaries of the virtual model.

When the user selects to specify a particular pattern 1204, the user may also select whether the specified pattern 1204 is to be conforming or non-conforming (Step 415). A conforming pattern may be a pattern 1204 having general contours that approximate adjacent boundaries (e.g., the polygonal shape of the 2D sketch or the trajectory of an adjacent infill feature that is approximating the polygonal shape), without significantly distorting angular features of the pattern (although segments within the pattern may be scaled and/or curved). A non-conforming pattern may be a pattern 1204 overlaying the polygonal shape without being affected by the shape. Examples of conforming patterns are illustrated in FIGS. 9 and 10 . Examples of non-conforming patterns are illustrated in FIGS. 11 and 12 . Note that a conforming pattern can still have one or more second and/or higher order patterns embedded therein, if desired. Also note that not all available patterns may have a conforming counterpart.

Processor 36 may then generate for each layer 1202 infill features having the user-selected and/or specified parameters (Step 420 or Step 425). This generation may include defining of points 1206 between which head 20 must move while discharging material, as well as grouping of points 1206 into any number of discrete paths 1208 having different starts, ends, and any number of sequentially arranged intermediate points 1206. In general, points 1206 may be coincident with infill patterns 1204 discussed above, and placed at ends of and along line segments within the patterns 1204. Points 1206 may mark locations through which head 20 must pass in order to follow infill patterns 1208 within an acceptable tolerance. A distance between adjacent points 1206 of a particular pattern may be selected based on a standard or user-specified resolution, with closer points providing higher resolution but also slowing a fabrication process.

It is contemplated that head 20 (e.g., a tip end of nozzle 30) may be regulated by processor 36 to follow different trajectories between points 1206 (e.g., regardless of an orientation of head 20). In one example, the tip end of nozzle 30 may follow a straight-line path between adjacent points 1206. In another example, the tip end of nozzle 30 may be provided a curvature function to follow between adjacent points. Other strategies may also or alternatively be implemented.

Any number of separate and distinct paths 1208 may be compiled from points 1206 discussed above based on a need to reposition head 20 during fabrication of structure 12, without discharging material during the repositioning. In general, a longer and more-continuous path 1208 may result in a greater amount of material being deposited within a shorter amount of time. In addition, a longer path 1208 may require fewer cuts of the reinforcement during fabrication of structure 12, which results in less wear on machine 14 and further time savings. Finally, a longer and more-continuous path 1208 may result in a greater performance (e.g., stiffness, strength, conductivity, heat transfer, etc.), in some applications (e.g., due to longer strands of reinforcement transferring loads).

Paths 1208 may be compiled from existing points 1206 based on a variety of different strategies. For example, within a base layer 1202, a first path 1208 may begin with a center-most point 1206 of the particular layer 1202; an outer-most point 1206; a first-generated point 1206; a last-generated point 1206; a point 1206 associated with a longest, shortest, straightest, or crookedest line or line segment of pattern 1204; a point 1206 functioning as a vertex between two line segments; a point 1206 within only one other adjacent point 1206 (e.g., an end point as opposed to a middle point); or another point 1206, and continue to a next closest and/or adjacent point 1206 within a same line or line segment. Path 1208 may be inhibited from including points 1206 or a sequence of points 1206 that causes crossing over any portion of an earlier discharged path 1208 (see, for example, the purple inner and white outer paths in the close-up of FIG. 10 do not cross) within the same layer. Compilation of points 1206 into a particular path 1208 may continue until a next closest or adjacent point 1206 would require head 20 to be repositioned without discharging material during the repositioning. For example, when moving head 20 from the purple inner path 1208 to the white outer path 1208 of FIG. 10 , head 20 should not discharge material and, thus, the paths 1208 are compiled to be separate. Compilation may continue from the base layer 1202 through the intermediate layers 1202 sequentially, until paths 1208 in a final or top layer 1202 have been compiled (e.g., from layer 1202 of FIG. 12 through FIG. 11 , FIG. 10 , and then FIG. 9 ). In some embodiments, one or more paths 1208 (e.g., a continuous reinforcement) may extend between adjacent layers 1202.

Once all of points 1206 in all layers 1202 of structure 12 have been compiled into paths 1208, the infill patterns 1204 and/or paths 1208 may be rendered on display 34 for inspection by the user (Step 450). Each of layers 1202 may be separately viewable, and options may be available to adjust (e.g., turn on/off, zoom in, spread apart, etc.) viewing of particular layers 1202 and/or features (e.g., infill pattern 1204, points 1206, paths 1208, etc.) of each layer 1202. Processor 36 may then be configured receive an indication from the user that the pattern(s) 1204, points 1206, and/or paths 1208 (e.g., known as a mesh) are acceptable or require adjustment (Step 455). If the 2D mesh is acceptable to the user (Step 455:2D-Y), processor 36 may return at least paths 1208 to Step 320 (referring to FIG. 3 ). However, if the pattern(s) 1204, points 1206, and/or paths 1208 are not acceptable (Step 455:N), processor 36 may receive modifications from the user (Step 460). These modifications may include among other things, changes to one or more pattern(s) 1204 (e.g., selection of a different pattern and/or changes to angles, offsets, amplitudes, frequencies, etc.), changes to one or more points 1206 (e.g., repositioning of points, addition of points, subtraction of points, etc.), and changes to one or more paths 1208 (e.g., changes to the particular points 1206 included within a particular path 1208, a sequential order of the paths 1208, etc.).

Returning to Step 410, when a user selects for infill of one or more layers 1202 to be topology optimized, processor 36 may advance to Step 445 instead of Step 415. At Step 445, processor 36 may implement one or more mathematical algorithms to layout matrix-coated reinforcements within the interior of the selected layer(s). Many different optimization processes may be implemented at Step 445, and Step 445 may be different (e.g., simpler) when the virtual model is 2D as opposed to 3D.

A simplified example of Step 445 performed for a 2D virtual model is illustrated in FIG. 16 . As shown in this figure, processor 36 may utilize the specifications (e.g., boundary load conditions, material properties, etc.) provided at Step 300 (referring to FIG. 3 ) to determine a basic field 1600 of vectors (e.g., force vectors, conductivity vectors, heat transfer vectors, etc.) passing through the layer(s) 1202. Processor 36 may then select one of a plurality of available patterns 1204 of infill and orient the pattern 1204 within the layer(s) in a manner that provides a greatest general alignment of pattern segments with the basic vector field 1600. In some applications, processor 36 may additionally adjust parameters (e.g., spacing, frequency, amplitude, etc.—see left vs right side of layer 1202 shown in FIG. 13 ) of the infill pattern 1204 to create greater alignment of pattern segments with the basic vector field 1600. For example, processor 36 may generate a pattern 1204 having sparser or no infill (see left/right-center of FIG. 13 ) at locations where lower-force transmission is expected, and denser infill (see left of FIG. 13 ) at other locations where higher-force transmission is expected. Control may pass from Step 445 to Step 430 described above.

Returning to Step 400, when processor 36 determines that the virtual model is a 3D model, control may advance to Step 450 instead of Step 405. At Step 450, processor 36 may generate a mesh of interconnected geometrical shapes (e.g., tetrahedrons, hexahedrons, pyramids, triangular prisms, etc.) within the boundaries of the virtual model, and render the mesh on display 34 for examination by the user. The shapes may allow for simplification of mathematical equations applied to each shape that can be used to approximate a solution for the overall model. Exemplary approximations will be discussed in more detail below.

Once the mesh has been generated and rendered on display 34, processor 36 may receive input from the user regarding acceptability of the mesh (Step 455). If the mesh is unacceptable (Step 455:N), the user may have the opportunity to manually edit the mesh. Processor 36 may receive the manual edits (Step 460), and control may return to Step 450. These edits may include, for example, a type and or sizes of the geometrical shapes used in the mesh, boundary locations of particular shapes, densities of the shapes at particular locations, etc. If the 3D mesh is acceptable (Step 455:3D-Y), processor 36 may receive a selection of whether the user desires to manually specify how the 3D model will be virtually sliced or for the processor 36 to automatically implement virtual slicing (Step 465). Note that slicing may not be required with a 2D model.

When the user selects to manually slice the 3D model of structure 12, processor 36 may receive input from the user defining one or more slicing surfaces and/or relationships between the surfaces (Step 470). It should be noted that the slicing surface(s) may be planar or non-planar, conforming to each other or non-conforming, parallel or non-parallel, and equally or unequally spaced. For example, the user may be able to select a datum having a particular shape (e.g., a planar datum, a spherical datum, a cylindrical datum, etc.), place and orient the datum relative to the 3D model (or vice versa), choose a propagation direction of the datum through the 3D model, and/or choose one or more relationships (e.g., orientation, offset distance, etc.) between different datums within the 3D model. The datum may be one of a plurality of predefined and available datums, a surface of the 3D model, an imported surface, a surface constructed by the user, and/or a surface that is mathematically defined by the user.

FIGS. 14, 15 and 16 illustrate different examples of options available to the user at Step 470. As shown in FIG. 14 , the user may select a predefined planar datum 1700 for use in slicing a 3D model 1702 of structure 12. A first datum 1700 may be placed by the user at a first side of model 1702, and a first direction 1704 may be selected for propagation of datum 1700 through model 1702 during slicing. In addition, the user may specify an equal distance d between adjacent slices generated by datum 1700. The distance d may be selected to correspond with a thickness dimension of a particular fiber/matrix combination intended for use throughout fabrication of structure 12. It is contemplated that, in some applications, the distance d may be a default value based on the capabilities and/or current configuration of machine 14.

In FIG. 15 , the same type of datum 1700 of FIG. 14 may again be selected by the user, but placed at a different location and/or orientation, and a different propagation direction 1704 may be selected. As seen from a comparison of FIGS. 14 and 15 , model 1702 may be sliced differently based on these selections.

FIG. 16 illustrates selection of a different and 3D datum 1700, for example either a different one of the predetermined and available datums (e.g., a cylindrical datum), a datum constructed by the user (e.g., using lower edges of model 1702), or a datum defined mathematically by the user. As discussed above, the user may alternatively select an existing 2D or 3D surface of model 1702 as datum 1700, if desired. As also seen in FIG. 16 , the user may select different distances between the slices of model 1702 at different locations. This different spacing may correspond, for example, with an intention to use different reinforcement/matrix combinations, different print heads 20, etc. when fabricating the corresponding layers. As can be seen from FIGS. 14-16 , the layers of model 1702 may be sliced utilizing datum 1700 to be conforming and/or parallel surfaces.

FIGS. 17, 18, and 19 illustrate alternative selections made by the user at Step 470. As shown in FIG. 17 , datums 1700 used to slice a single model 1702 may be 3D, selected from surfaces of model 1702, and/or have different shapes and/or sizes. In the embodiment of FIG. 17 , the different datums 1700 are generally conforming to contours of the model 1702. However, this may not always be true. For example, FIG. 18 illustrates a lower datum 1700 a, an intermediate datum 1700 b, and an upper datum 1700 c. Datum 1700 b may have contours conforming to a portion of datum 1700 a. Datum 1700 c may have contours conforming to a portion of datum 1700 b and different contours conforming to the same or different portions of 1700 a. As shown in FIG. 19 , some contours (e.g., overhanging portions) of datums 1700 b and 1700 c may be unique and nonconforming to any portion of the other datums 1700, if desired. It is contemplated that each of datums 1700 could be assigned the same or different propagation directions through any desired distance d.

As shown in the example of FIG. 20 , the use of non-conforming datums 1700 within the same model 1702 may allow for steering of fibers in multiple (e.g., three) dimensions, even when printing overlapping layers (i.e., even when not printing in free-space).

After slicing the virtual model, processor may render the slicing (Step 475) and receive feedback from the user regarding acceptability of the slicing (Step 480). When the slicing of Step 470 is unacceptable, processor 36 may receive user-specified adjustments to the slicing (Step 485). Control may then return from Step 480 to Step 475.

Returning to Step 465, when automatic slicing is requested by the user, control may proceed to a Step 490 instead of Step 470. At Step 490, processor 36 may utilize the mesh generated at Step 450 along with the model specifications (e.g., the boundary load conditions) and material specifications to generate a 3D vector field through the virtual model.

For example, processor 36 may initially consider the 3D model of structure 12 to behave isotropically relative to one or more properties (e.g., stress, strain, heat transfer, conductivity, etc.) specified by the user. Processor 36 may apply user-specified boundary conditions and, via Finite Element Analysis (FEA), determine how the user-specified property(ies) propagates through the individual shapes of the mesh defined at Step 450 to affect an overall performance of the virtual model. A gradient of the performance may then be used to generate a field of performance vectors passing in multiple dimensions through the model.

Slicing may be automatically implemented based on the vector field (Step 490). For example, one or more datum(s) 1700 may be generally aligned with the vector field (e.g., with the highest magnitude vector(s), such that the resulting paths can steer reinforcements in the general direction(s) of the performance vector(s). This may generally result in a performance enhanced structure 12. Control may then proceed from Step 490 to Step 475.

As stated above, topology optimization may proceed differently at Step 445 when the virtual model is 3D. For example, processor 36 may again implement FEA, but this time with an assumption that the virtual model will behave anisotropically. That is, processor 36 may select one or more patterns of infill to populate each of the slices generated at Step 490, and thereafter perform FEA based on user-defined material properties of fibers being placed along segments of the pattern(s). The pattern(s) may then be iteratively adjusted to optimize the user-defined performance properties.

In some applications, more than one performance property may be specified by the user for optimization. For example, the user may select a structural property (e.g., strength, stiffness, strain, deflection, toughness, hardness, ductility, etc.) and any number of non-structural properties (heat transfer, magnetism, electrical conductivity, reflectivity, etc.) as properties to be optimized. In this situation, the FEA process just discussed may be implemented first in regard to only a structural property based on user-supplied material specifications associated only with structural reinforcements (e.g., carbon fibers, glass fibers, Kevlar fibers, etc.).

The results of this FEA process may generate a structural shape, which can form the basis for optimization of any number of non-structural properties. For example, the shape produced by the FEA process may create an envelope within which functional reinforcements are allowed to be placed. After obtaining this structural shape, processor 36 may then determine one or more patterns for each slice of the virtual model. The patterns may then be used for placement of the functional reinforcements (i.e., functional reinforcements may only be placed at locations where structural reinforcements will exist), and processor 36 may again analyze the mesh of the virtual model with respect to the pattern(s) and user-suppled material specifications associated with the functional reinforcements (e.g., copper wires, optical tubes, nichrome wires, etc.). It is contemplated that a smoothing or purging operation may be implemented (e.g., to remove impossible points, artifact geometry, random features, etc.) prior to determining the patterns for each slice of the virtual model, if desired.

It should be noted that optimization routines may similarly be implemented with respect to different matrixes and/or additives. For example, the FEA process resulting in the structural skeleton could be implemented with a base structural resin. Thereafter, the FEA process may be repeated with non-structural performance enhancing additives included within the envelope of the structural skeleton.

The Surface Module is illustrated in detail in FIG. 5 . As shown in FIG. 5 , surfacing may also be a function of anticipated surface loading of structure 12. Accordingly, once control passes into the Surface Module, processor 36 may generate a mesh of interconnected geometrical shapes over an outer surface of the virtual model, and render the mesh on display 34 for examination by the user (Step 500). The mesh may have a thickness that is a discrete dimensional multiple of the material(s) intended for use in surfacing any number of outer layers of structure 12.

Once the mesh has been generated and rendered on display 34, processor 36 may receive input from the user regarding acceptability of the mesh (Step 510). If the mesh is unacceptable (Step 510:N), the user may have the opportunity to manually edit the mesh. Processor 36 may receive the manual edits (Step 520), and control may return to Step 500. These edits may include, for example, a type and/or sizes of the geometrical shapes used in the mesh, boundary locations of particular shapes, densities of the shapes at particular locations, etc.

When the mesh is acceptable (Step 510:Y), processor 36 may use the mesh to forecast a user-requested performance of structure 12 under user-specified operating conditions (Step 530). In some embodiments, processor 36 may be utilize the boundary element method (BEM) to forecast the performance of structure 12. BEM is a numerical computational method of solving for fluid mechanics, acoustics, electromagnetics, fracture mechanics, and other performances at the surface of a modeled structure. BEM is generally computationally more efficient than other methods (e.g., FEA), because it utilizes a mesh over only the surface rather through a volume of the model. It is contemplated, however, that traditional FEA could alternatively be utilized to forecast the performance of the surface layer(s) of structure 12, if desired.

Similar to Step 490 discussed above, processor 36 may generate a vector field based on a gradient of the results from Step 530 (Step 540). Points 1206 may be distributed in any desired manner across the surface of structure 12 before or after completion of Step 540, and points 1206 may be compiled into any number of separate and distinct paths 1208 having trajectories generally aligned with the vector field (Step 550).

Once all of points 1206 in the surface of structure 12 have been compiled into paths 1208, the paths 1208 may be rendered on display 34 for inspection by the user (Step 560). Options may be available to adjust (e.g., turn on/off, zoom in, spread apart, etc.) viewing of particular features (e.g., points 1206, paths 1208, etc.). Processor 36 may then be configured receive an indication from the user that the points 1206 and/or paths 1208 are acceptable or require adjustment (Step 570). If the points 1206 and paths 1208 are acceptable to the user (Step 570:Y), processor 36 may return at least paths 1208 to Step 320 (referring to FIG. 3 ). However, if the points 1206 and/or paths 1208 are not acceptable (Step 570:N), processor 36 may receive modifications from the user (Step 580). These modifications may include among other things, changes to one or more points 1206 (e.g., repositioning of points, addition of points, subtraction of points, etc.) and changes to one or more paths (e.g., changes to the particular points 1206 included within a particular path 1208, a sequential order of the paths 1208, etc.). Control may then return to Step 560.

It should be noted that multiple alternative surfacing methodologies may be implemented at Step 315, if desired. For example, one or more of the methods disclosed in U.S. Provisional Patent Application No. 62/955,352 that was filed on Dec. 30, 2019 and which is incorporated herein by reference may be implemented at Step 315. Alternatively or additionally, geodesics, curve-limiting algorithms, etc. may be implemented to determine paths that head 20 must follow during discharge of surface-located reinforcements.

In one embodiment depicted in FIGS. 21, 22, and 23 , path generation at the surface of structure 12 may be a function of how the internal skeleton of structure 12 was previously fabricated. In this embodiment, one or more paths 128 may be generated based on the propagation direction 1704 of datums through the skeleton of virtual model 1702. For example, paths 1208 may be generated to pass through points 1206 in a direction that is generally aligned with the propagation direction 1704. This may help increase a resistance to delamination between layers. Points 1206, in this example, may be distributed uniformly across an outer surface of structure 12 or distributed based on curvature of the virtual model and a desired resolution of structure 12.

An exemplary CAM Module is illustrated in detail in FIG. 6 . As seen in FIG. 6 , processor 36 may receive information specific to the particular motion platform (e.g., support 18) that will be used to move head 20 during fabrication of structure 12 (Step 600). This information may include, for example, capabilities of support 18 with regard to reach distance, reach angle, motion resolution, maximum number of revolutions (e.g., winds) in a particular direction, speeds, accelerations, etc. In some embodiments, this information may also be associated with a particular configuration of head 20 that is attached to support 18. For example, a first head 20 and/or outlet 24 may have a different form factor, mass and/or capacity (e.g., cure speed) than another head 20 and/or outlet 24 of the same machine 14.

The information received at Step 600 may be received directly via manual input from the user, or automatically. For example, processor 36 may be configured to automatically poll and receive electronic communication from support 18 and/or head 20 regarding their capacities and/or configurations. Alternatively or additionally, processor 36 may be configured to automatically test for a capacity and/or configuration (e.g., by attempting to move support 18 and/or head 20 in a particular manner during a calibration procedure) and receiving feedback (e.g., sensory input) during the testing.

After receiving the information specific to machine 14, processor 36 may be configured to calculate metrics needed to steer head 20 along paths 1208 during material discharge through outlet 24 (Step 610). These metrics may include, for example, tangent vectors, normal vectors, and/or derivatives of the tangent and/or normal vectors at and/or between each point within each path.

In some applications, it may be possible for paths to be generated that cannot be followed properly by the specific configuration of machine 14 intended to fabricate structure 12 or that are otherwise undesirable (e.g., noisy). Accordingly, some filtering of the paths and/or machine code may be implemented to account for these inconsistencies. It is contemplated that a user may be able to select manual or automatic filtering (Step 620), and for processor 36 to initiate corresponding filtering (Steps 625 or 630, respectively) based on the selection. The filtering may include for example, analyzing the derivatives of the tangent and/or normal vectors to look for and smooth out unexpected changes between adjacent points in the paths. These unexpected changes may be associated trajectory shifts (e.g., turns, dips, kinks, cross-overs, etc.) within the paths that cannot be properly followed by head 20 of the specific machine 14. For example, FIG. 24 illustrates a path 1208, for which normal vectors have been generated. By examining a rate of change of the normal vectors (e.g., by comparison with a threshold rate of change), an unacceptably sharp curve may be recognized (e.g., shown at the left of FIG. 24 ) and printability of the path 1208 analyzed. Any type of filtering strategy and/or algorithms known in the art may be used to look for and smooth out the unexpected changes or otherwise remove unwanted noise.

In one example of filtering, transitions between segments in a path may be selectively smoothed or rounded to eliminate vertices having angular changes greater than a threshold amount. For instance, a point-to-point curvature of a path may be calculated and, when the calculated curvature is greater than a user-provided or system-limited threshold, local smoothing may be implemented. Smoothing may include, among other things, adding additional and/or removing intermediate points at strategic locations to reduce the point-to-point curvature. This process may be implemented repeatedly any number of times until all calculated curvatures are less than the threshold amount.

In another example of filtering, printability of a path may be checked against material limitations instead of or in addition to machine limitations. That is, it may be possible for machine 14 to follow a prescribed path during material discharge, but the material intended for discharge along the path may experience unacceptable loading (e.g., tight curves that cause damage, such as breakage or fraying) during the discharge. In this example, curvatures may again be calculated as described above, compared to limitations of the materials (e.g., stresses, strains, etc.), and smoothed as necessary. Local physical analysis of the paths as bent beams of reinforcements having particular properties may be used to determine if the curvatures are acceptable. It is contemplated that, in addition to or instead of smoothing of the paths, other fabrication parameters (e.g., temperature, discharge speed, cure intensity, compaction force, etc.) could be selected to accommodate paths that might otherwise be unacceptable. It should be noted that similar checks may be made in relation to a particular matrix or matrix/fiber combination

After filtering of the paths, machine code may be generated that causes a tool center point (TCP) of head 20 (e.g., a tip of outlet 24, a nip point of the compactor, etc.) to follow along the tangent vectors through each point in the paths at particular travel speeds, that causes a center axis of head 20 to be generally aligned with the normal vectors at each point, that inserts cut/feed sequences at the end and start of each path, that causes cure enhancers 22 and/or the compactor to be activated at specified intensity levels, etc. (Step 635). In one embodiment, the machine code may include a string of ASCII characters having a format similar to the example (EX-1) provided below:

EX-1

-   -   COMMAND; and     -   VALUE,         -   wherein:             -   COMMAND can be any preprogrammed function found within a                 corresponding library of memory 42; and             -   VALUE can be a coordinate; On/Off; a percent from 0 to                 100%, a number, etc.

Any number of commands may be included within a single string, and an order of the commands may be important to successful completion of the path. The values may be pulled from a lookup table stored within memory 42 based on the points within the filtered paths, the tangent vectors, the normal vectors, the derivatives, the material being discharged, and/or other command values (e.g., values associated with other commands being issued at the same time) within the same string of ASCII characters.

For example, for travel of head 20 between points that lie adjacent to each other on a longer straighter path, code may be generated that causes head 20 to travel between the points at a higher relative speed. Likewise, for travel at the higher relative speed, code may be generated that causes cure enhancers 22 to be activated at a higher intensity level, such that a discrete unit of discharged material is exposed to a desired quantity of energy. In contrast, for travel of head 20 between points that lie on a shorter and/or curvier path, code may be generated that causes head 20 to travel between the points at a lower relative speed and/or at a lower cure intensity level. Opaque materials may generally require slower travel speeds and/or higher cure intensity levels than more transparent materials. Lower compaction forces may be implemented on paths within a narrower cross-section of structure 12 and/or on paths that are unsupported.

At an end of a particular path, code may be generated that causes the TCP of head 20 to move away from and/or towards the corresponding point at a fly-away and/or fly-in angle α that is oblique to the tangent and the normal of the path through the point. Code may similarly be generated just before the end of the path to cause a cutter to sever the reinforcement at a particular distance of the TCP before the final point, and then for head 20 to transition to a new fly-in location at a start of a next path. Code for adjustments in compaction force may be generated during a start and/or end of a path, during formation of different features of a path (e.g., level vs inclined, straight vs curved, etc.) and/or when transitioning between paths that overlap an underlying layer and paths that are in free-space (i.e., unsupported). In some embodiments, a location of the TCP may be shifted, for example depending on a location of head 20 along a particular path (e.g., at a start, middle, or end).

An example string of ASCII characters that causes head 20 to discharge material along the path depicted in FIG. 25 is provided in the table below (T-1):

T-1 Path0-4 Command Fly-In Command Move Command Delay Command Move Value X0, Y0, Z0 Value X1, Y1, Z1 Value 2 Seconds Value X2, Y2, Z2 Command Speed Command Speed Command Cure Intensity Command Speed Value 10% Value 100% Value 100% Value 20% Command Cure Intensity Command Cure Intensity Command Compaction Command Cure Intensity Value  0% Value 100% Value 100% Value 50% Command Compaction Command Compaction Command Compaction Value  0% Value 100% Value 75% Command Move Command Fly-Away Command Cut Value X3, Y3, Z3 Value X4, Y4, Z4 Value Wait for done Command Speed Command Speed Command Cure intensity Value 20% Value 20% Value 0% Command Cure Intensity Command Cure Intensity Command Compaction Value 50% Value  0% Value 0% Command Compaction Command Compaction Command Value 75% Value  0% Value

After completion of Step 635, control may return to FIG. 3 . Specifically, the machine code may be used to simulate fabrication of structure 12 according to Step 330 discussed above.

An exemplary Check Module is illustrated in detail in FIG. 7 . The Check Module may help processor 36 ensure that machine 14 is ready to execute the selected plan of fabrication paths and manufacture structure 12. This procedure may include a number of different steps, which may be implemented in any desired order.

One of these steps may include determining if hardware recommended for use in fabricating structure 12 is currently connected to machine 14 and operational within specified ranges (Step 700). This hardware may include, among other things, high-level print head modules and lower-level component hardware, such as compacting hardware, matrix wetting hardware, cut hardware, feed hardware, cure hardware, and/or other output peripherals 40B (referring to FIG. 2 ). For example, processor 36 may be configured to receive input from any number of proximity sensors, RFID tags, or other input peripherals 40A indicative of whether each and/or which of the output peripherals 40B are connected to machine 14. In another example, operational sensors (e.g., temperature sensors, pressure sensors, intensity sensors, etc.) and/or other input peripherals 40A may provide input to processor 36 indicative of an operational condition (on/off, within expected range, etc.) of the output peripherals 40B. Depending on the signals received by processor 36, processor 36 may selectively generate an error (e.g., in response to a missing hardware component) and/or selectively cause a warning (e.g., in response to an inappropriate operational range) to be shown on display 34 or otherwise brought to the attention of the user (e.g., via a light on machine 14). In some instances, the error(s) may inhibit operation of machine, while the warning(s) may simply prompt a user to implement a corrective action (Step 710). In other instances, processor 36 may automatically implement a corrective action (e.g., adjust a temperature, pressure, intensity, etc.) in response to the warning.

Another step in the procedure performed by the Check Module may include determining if a sufficient supply of matrix, reinforcement, and/or additive(s) are available to head 20 (Step 720). In one embodiment, this determination may be made, for example, based at least in part on input from the user that is indicative of an amount of material in, on or otherwise being passed to head 20. Specifically, processor 36 may compare this amount with a required amount to determine if some amount more than required to make structure 12 is currently available.

It is contemplated that processor 36 may additionally or alternatively track supply and usage of the material (e.g., via one or more input peripherals 40A, such as an ultrasonic or laser sensor that measures matrix level, additive level, spool diameter, weights, etc.), and compare an amount consumed with an amount supplied to determine if some amount more than required to make structure 12 is currently available. When less material is currently available, processor 36 may generate an error and/or provide a warning to the user (e.g., via display 34), thereby prompting the user to refill the corresponding supplies of materials or override the warning (Step 730). Processor 36 may alternatively implement an automated replenishment process, if desired. When processor 36 determines that sufficient material is available, Step 720 may be bypassed.

Another step in the procedure performed by the Check Module may include determining if offboard equipment (e.g., safety equipment) and/or environmental factors are within required ranges (Step 740). The offboard equipment may include, for example, interlocks associated with safety enclosures around machine 14, room scanners around machine 14, and/or emergency stop buttons near machine 14. When any of these and/or other safety equipment generate signals indicative of unsafe conditions, processor 36 may inhibit operation of machine 14 and/or provide a warning to the user (e.g., via display 34), thereby prompting the user to clear the area, close safety enclosures, and/or ensure proper operation of the safety equipment (Step 750). Similarly, processor 36 may automatically take measurements of environmental conditions (e.g., temperature, humidity, light, etc.—via input peripherals 40A) around machine 14 and compare the measurements to required conditions stored within the library of memory 42. When any of the measured conditions are out of range of expected values, processor 36 may automatically adjust the conditions (e.g., via output peripherals 40B), inhibit operation of machine 14, and/or provide a warning to the user (e.g., via display 34), thereby prompting the user to manually adjust the conditions and/or override the warning. Control may then return to FIG. 3 .

An exemplary Discharge Module is illustrated in FIG. 8 . As shown in FIG. 8 , processor 36 may activate hardware (e.g., output peripherals 40B and/or support 18) of machine 14 based on the machine code received from the CAM module and thereby cause material to be discharged along paths 1208 in a corresponding manner. This may include, for example, causing the material to be discharged (pulled and/or pushed) from a nozzle 30 of outlet 24 (referring to FIG. 1 ), activating output devices of peripherals 40B associated with support 18 to move the TCP of head 20 along a trajectory of the path at a specified speed, and regulating head 20 (e.g., one or more output devices of peripherals 40B attached to head 20) to release the associated fibers with a specified tension. In addition, processor 36 may selectively activate the output devices of peripherals 40B to compact the discharging material and to irradiate the discharging material according to parameters specified for a given point and/or segment along a given path. At the same time, processor 36 may monitor the resulting discharge (Step 800).

For example, during completion of the first commands in the string shown in table T-1 above, processor 36 may monitor movement of head 20 from (X0, Y0, Z0) to (X1, Y1, Z1) and determine if material is being paid out and cured as expected (Step 805). This monitoring may include, for example, tracking a length of reinforcement passing through head 20 (e.g., via a rotary encoder or potentiometer connected to a fiber spool, a feed roller, a fiber redirect, etc. within head 20) and comparing that amount with a theoretical distance between (X0, Y0, Z0) and (X1, Y1, Z1) and/or with an actual distance that head 20 is moved by support 18 in response to the commands. When the distance is not about equal (e.g., with engineering tolerances) to the length of reinforcement, processor 36 may determine that an error has occurred. The error could indicate that the fiber has broken, that the fiber supply was exhausted, that the matrix did not cure properly at point (X0, Y0, Z0), that the fiber was dislodged from point (X0, Y0, Z0), and/or that another error has occurred.

In some instances, input regarding fiber tension and/or motion of an associated tensioner may also be considered when determining proper material payout. For example, it may be possible for the fiber to become stuck at some location inside head 20 and for slack or excessive tension to be accommodated for by overtravel of the tensioner. In one situation, a sudden spike in tensioner motion in a tension-decreasing direction could indicate improper payout of material, even though the rotary sensor might suggest otherwise. In another situation, if the fiber were to break, overtravel of the tensioner in an opposite and tension-increasing direction (i.e., a direction of the tensioner that would normally attempt to increase tension of the fiber) may be detected and again indicate improper payout of material.

In some instances, an amount of consumed matrix may be monitored (e.g., via a level sensor or other input peripheral 40A) and compared with an amount that theoretically should be consumed during discharge from (X0, Y0, Z0) to (X1, Y1, Z1). When the two amounts to do not substantially match (e.g., within engineering tolerances), processor 36 may again conclude that material has been paid out improperly.

Finally, it may be possible for the discharging material to be placed in error. For example, the material may be placed too far away from a previously placed path of material, allowing gaps to exist between the paths. Alternatively, the material could be placed to overlap the previously placed path of material, causing undesired buildup. In either situation, based on any combination of input from peripherals 40A (e.g., image signals, location signals, etc.) processor 36 may again conclude that material has not been paid out properly.

When any of these and other errors are detected by processor 36 (Step 805), processor 36 may implement any number of different responses. These responses can include, among other things, implementing an immediate halt response, a hold-short response, a warning response, and/or an adjustment to operation of head 20. The immediate halt response may include immediately halting motion of support 18 and further material discharge activities of head 20. The hold-short response may include allowing support 18 and head 20 to complete only a current path (i.e., hold short of a next path) or segment of path (i.e., hold short of a next segment of the same path) and then to move to a known safe location away from structure 12 and await manual instruction from the user. The warning response may include a visual, audible, and/or tactile indication provided to the user (e.g., via display 34) that alerts the user to an unexpected condition, allowing the user to determine if the current process should be interrupted or overridden to allow continuance. The adjustments may include adjustments to any operation of head 20 (of output peripherals 40B) and/or of the paths yet to be followed by machine 14.

When an error has been detected during material discharge, processor 36 may attempt to determine a cause of the error (Step 810) and selectively implement one of the four above-described responses (and/or other responses) based on the cause (Steps 815, 820, 825, and/or 830, respectively).

For example, during and/or just after completion of a feed event, which will be described in greater detail below, processor 36 may monitor material discharge from head 20 to confirm that reinforcement (e.g., any amount greater than zero) is being paid out during motion of head 20 relative to structure 12. When signals from an associated sensor and/or other input peripheral 40A are not indicative of reinforcement being paid out at this time, processor 36 may conclude at Step 810 that the feed event failed and/or that the reinforcement has become dislodged from anchor 32, and control may pass to Step 815. Similar action may be taken when the signals from the sensor indicate motion of the reinforcement in a reverse direction through head 20 following the feed event.

In another example, during and/or just after completion of a cut event, which will be described in greater detail below, processor 36 may monitor material discharge from head 20 to confirm that reinforcement (e.g., any amount greater than zero) is not being paid out during motion of head 20 relative to structure 12. When signals from the associated sensor or other input peripheral 40A are indicative of reinforcement being paid out at this time, processor 36 may conclude at Step 810 that the cut event has failed and control may again pass to Step 815.

In another example, during normal discharge that is not associated with a cut event, a feed event, or any other special event, processor 36 may monitor material discharge from head 20 to confirm that reinforcement is being paid in an amount corresponding to the motion of head 20. When signals from the associated sensor or other input peripheral 40A are indicative of an incorrect amount of reinforcement being paid out at this time, processor 36 may conclude at Step 810 that material is not being discharged in a desired manner and control may again pass to Step 815.

In another example, during any event (e.g., feed, cut, normal, and/or otherwise), processor 36 may monitor tensioner operation to confirm that that the tensioner is functioning within an expected operational range (e.g., not over-traveling in any direction). When signals from an associated input peripheral 40A are indicative of overtravel, processor 36 may conclude at Step 810 that material is not being discharged in a desired manner and control may again pass to Step 815. It is contemplated that overtravel of the tensioner in one or both directions (e.g., in the tension-increasing direction) could alternatively result in control passing to Step 820 or Step 825, if desired.

In a similar example, during normal operation, processor 36 may monitor compactor operation to confirm that that the compactor is remaining within an expected operational range (e.g., not bottoming out and providing at least some compaction at all specified times). When signals from an associated input peripheral 40A are indicative of improper compactor operation, processor 36 may conclude at Step 810 that material is not being discharged in a desired manner and control may again pass to Step 815. It is contemplated that during a no-compaction situation, control could alternatively pass to Step 820 or 825, if desired.

In another example, during any operation of head 20, processor 36 may monitor material supply levels (e.g., of reinforcement, matrix, and/or additive supplies) to confirm that sufficient material remains to complete at least a current path or all of structure 12. When signals from associated input peripheral(s) 40A are indicative of a depleted material (e.g., enough material to complete a current path, but not a next path), processor 36 may conclude at Step 810 that a material error exists and control may pass to Step 820. However, when the signals are indicative of only low levels of material (e.g., enough material to complete multiple paths, but perhaps not enough to complete all of the paths), control may instead pass to Step 825. It is contemplated that during low levels of fiber, control could alternatively pass to Step 820, if desired.

After implementation of either of Steps 815 or 820, operation of machine 14 may be halted until input from a user provides an override to continue operation. Accordingly, processor 36 may monitor I/O devices 38 (referring to FIG. 1 ) and return control to Step 800 only upon receiving corresponding input from the user (Step 830).

After generating the warning at Step 825, normal operation of machine 14 may continue. That is, machine 14 may be caused to continue discharging material along the paths, as specified in the machine code.

When processor 36 determines at Step 810 that reinforcement has been placed onto or into structure 12 in error (e.g., via images capture of structure 12 by an input peripheral 40A, such as scanner), any number of different adjustments may be implemented (Step 830). For example, when an unacceptable wide gap has been created between adjacent tows of fibers of structure 12, adjustments may be implemented to cause future paths to be shifted in a particular direction and/or closer together. Similarly, when overlapping of adjacent tows is detected, adjustments may be to cause future paths to be shifted in a particular direction and/or further apart. Additionally, when cutting and/or feeding material, the cutting and/or feeding locations may not match intended cutting and/or feeding locations. Available adjustments may include, for example, a shift in the TCP location, an increase or decrease in tension, an increase or decrease in cure intensity, an increase or decrease in head travel speed along the paths, timings of special (e.g., cutting, feeding, etc.) events, and/or gains applied to the coordinates of the paths.

In one specific embodiment, when errors in material placement are detected (e.g., each time or only after a threshold amount of error as been detected), processor 36 may determine a need to reanalyze the virtual model of structure 12. That is, placement errors, if significant enough, could negatively affect a performance of structure 12. In these situations, processor 36 may be configured to update the virtual model (e.g., the CAD file) with the actual placement of fibers up to the current point in fabrication, and direct the virtual model back through the corresponding infill and/or surface modules (310 and/or 315—referring to FIG. 3 ) for a new analysis (e.g., FEA, BEM, Topology Optimization, etc.) of the anticipated performance of structure 12. This may result in performance-driven adjustments to the paths yet to be executed by machine 14. In other words, processor 36 may halt operation of machine 14 partway through fabrication of structure 12, update the CAD file of structure 12, reanalyze the associated model, and make adjustments to the remaining paths in order to accommodate actual placement of the initial paths already completed.

In one specific example, during discharge monitoring, processor 36 may detect that a cut and subsequent feed location has been consistently erroneous, resulting in every path of fiber being shorter than specified at a particular location on or within structure 12. If not otherwise accounted for, this could result in weakness at that location. Accordingly, after directing the updated virtual model back through Steps 310 and/or 315 to 360, the subsequently generated paths may call for longer fibers to make up for the initial lack of material at the weakened location.

In another specific example, in response to processor 36 detecting overlaps or gaps between adjacent paths of material (e.g., via a profilometer or other peripheral 40), recycling back through Steps 310 and/or 315 to 360 may produce a change in ply angle of one or more of the remaining paths. The change in ply angle(s) may produce an average or overall ply angle for the particular section of structure 12 that approximates the originally intended orientation.

During normal operation (e.g., when no errors have been received at Step 805), a command to cut the fibers near the end of a particular path may be received (e.g., before head reaches (X4, Y4, Z4) in the example of table T-1). Processor 36 may determine if this command has been received (Step 835) and selectively implement a corresponding routine. It is contemplated that multiple different cutting routines could be implemented at this time, including a stationary cutting routine and an on-the-fly cutting routine. Processor 36 may determine if the to-be-implemented routine should be the stationary routine or the on-the-fly routine depending on a hardware makeup of machine 14 and/or based on the current and/or next path being followed (Step 840).

During implementation of the stationary cutting routine (Step 845), processor 36 may cause all motion of head 20 to stop (e.g., by directing corresponding commands to support 18). This may effectively cause the pulling of material from head 20 to cease during normal operations. At about this same time, processor 36 may deactivate the cure source, active a fiber clamp inside of head 20, and activate the cutting mechanism. Thereafter, the cure source may be reactivated (e.g., to anchor a severed tail extending from head 20), followed by deactivation of the clamp. Motion of head 20 may then be restarted. It should be noted that deactivation of the claim prior to anchoring could cause the reinforcement to be undesirably retracted back into head 20, which could then require rethreading.

During implementation of the on-the-fly cutting routine (Step 850), motion of head 20 may not need to cease and the cure mechanism may not be deactivated. Instead, processor 36 may synchronize activation of the clamp and the refeeding of the fiber (i.e., extension of the severed tail) with the TCP of head 20 reaching a particular coordinate along a current path. The fiber may be clamped just before severing of the fiber, and then quickly released after anchoring of the tail. Processor 36 then may cause support 18 to move head 20 through the remaining portion of the current path without interruption.

Once severing of the material discharging from head 20 has been accomplished, a refeeding routine may be implemented (Step 860). Any refeeding routine known in the art may be utilized. Control may then return to Step 365 of FIG. 3 .

It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed systems and methods. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the disclosed systems and methods. It is intended that the specification and examples be considered as exemplary only, with a true scope being indicated by the following claims and their equivalents. 

What is claimed is:
 1. A method for additively manufacturing a structure, comprising: generating at least one tool path; causing an additive manufacturing machine to place material along a first portion of the at least one tool path; monitoring placement of the material along the first portion of the at least one tool path; adjusting a second portion of the at least one tool path based on the placement; and causing the additive manufacturing machine to place material along the second portion of the at least one tool path after the adjusting; wherein: generating includes: analyzing a virtual model of the structure based on intended loading of the structure; and generating the at least one tool path based on the analyzing such that the structure achieves a desired performance; and the method further includes updating the virtual model of the structure based on the placement.
 2. The method of claim 1, wherein adjusting the second portion of the at least one tool path includes reanalyzing the virtual model and adjusting the second portion based on the reanalyzing such that the structure achieves the desired performance regardless of a deviation of the placement from the first portion.
 3. The method of claim 2, wherein reanalyzing includes performing a finite element analysis.
 4. A method for additively manufacturing a structure, comprising: analyzing a virtual model of the structure; responsively generating a plan for manufacturing the structure, the plan including a plurality of tool paths; causing an additive manufacturing machine to place material along a first of the plurality of tool paths; monitoring placement of the material along the first of the plurality of tool paths; reanalyzing the virtual model based on the placement; adjusting a second of the plurality of tool paths based on the reanalyzing; and causing the additive manufacturing machine to place material along the second of the plurality of tool paths after the adjusting.
 5. The method of claim 4, wherein reanalyzing includes performing a finite element analysis.
 6. The method of claim 4, wherein analyzing the virtual model includes analyzing the virtual model based on intended loading of the structure.
 7. The method of claim 6, wherein adjusting the second of the plurality of tool paths includes adjusting the second of the plurality of tool paths based on the reanalyzing such that the structure achieves a desired performance regardless of a deviation of the first of the plurality of tool paths from a planned location.
 8. The method of claim 7, further including updating the virtual model of the structure based on the placement. 